<script lang="ts" setup>
import useStore from '@/store';
import { useLazyData } from '@/utils/hooks';
import HomePanel from './HomePanel.vue';
const { home }  = useStore()
const target = useLazyData(()=>{
  home.getNewList()
})

</script>
<template>
<div ref="target">
  <HomePanel title="新鲜好物" subTitle="新鲜出炉 品质靠谱">
    <!-- 面板内容 -->
      <transition name="fade">
    <ul class="goods-list" ref="target" v-if="home.newGoodList.length > 0">
      <li v-for="item in home.newGoodList" :key="item.id">
        <RouterLink :to="'/product/'+item.id">
          <img
            v-lazy="item.picture"
            alt=""
          />
          <p class="name ellipsis">{{item.name}}</p>
          <p class="price">&yen;{{item.price}}</p>
        </RouterLink>
      </li>
    </ul>
      <div class="home-skeleton" v-else>
        <div
          class="item"
          v-for="i in 4"
          :key="i"
          :style="{ backgroundColor: '#f0f9f4' }"
        >
          <XtxSkeleton bg="#e4e4e4" :width="306" :height="306" fade animated  />
          <XtxSkeleton bg="#e4e4e4" :width="160" :height="24" fade animated />
          <XtxSkeleton bg="#e4e4e4" :width="120" :height="24" fade animated />
        </div>
      </div>
      </transition>
    <template #right>
      <XtxMore path="/"></XtxMore>
    </template>
   
  </HomePanel>
  </div>
</template>

<style scoped lang="less">
// 离开淡出动画
.fade {
  &-leave-from {
    opacity: 1;
  }
  &-leave-active {
    position: absolute;
    width: 100%;
    transition: opacity 0.5s 0.2s;
    z-index: 1;
  }
  &-leave-to {
    opacity: 0;
  }
}

.home-skeleton {
  width: 1240px;
  height: 406px;
  display: flex;
  justify-content: space-between;
  .item {
    width: 306px;
    .xtx-skeleton ~ .xtx-skeleton {
      display: block;
      margin: 16px auto 0;
    }
  }
}
</style>

<style scoped lang="less">
.goods-list {
  display: flex;
  justify-content: space-between;
  height: 406px;
  li {
    width: 306px;
    height: 406px;
    background: #f0f9f4;
    .hoverShadow();
    img {
      width: 306px;
      height: 306px;
    }
    p {
      font-size: 22px;
      padding: 12px 30px 0 30px;
      text-align: center;
    }
    .price {
      color: @priceColor;
    }
  }
}
</style>